#include "mapaabstracto.h"
#include <gtkmm.h>
#include <gtkglmm.h>

namespace ui {
namespace tablero {
namespace mapa {

MapaAbstracto::MapaAbstracto(TexturaDeFondo &p_TexturaDeFondo, Mapa *p_Mapa) :
	m_TexturaDeFondo(p_TexturaDeFondo),
	m_pTerritorioSeleccionado(NULL) {
	
	m_Mapa = p_Mapa;
}

MapaAbstracto::~MapaAbstracto() {
}

void MapaAbstracto::dibujar() {
	dibujar_Mutex.lock();
	this->dibujarPlaneta();
	this->dibujarCiudades();
	dibujar_Mutex.unlock();
}

void MapaAbstracto::escribir(float z, float x, float y, string s) {
	
	
	GLuint m_FontListBase = glGenLists(128);
	Glib::RefPtr<Pango::Font> font;
	Pango::FontDescription font_desc("sans heavy 14");
 
	font = Gdk::GL::Font::use_pango_font(font_desc, 0, 128, m_FontListBase);
 
    glPushMatrix();
	glColor3f(1.0f, 1.0f, 1.0f);
	glTranslatef(x, y, z);
	glRasterPos2f(0.0, 0.0);
	glListBase(m_FontListBase);
	glCallLists(s.length(), GL_UNSIGNED_BYTE, s.c_str());
    glPopMatrix();

 
}
Territorio *MapaAbstracto::getTerritorioSeleccionado() {
	return this->m_pTerritorioSeleccionado;
}

void MapaAbstracto::setTerritorioSeleccionado(Territorio *p_pTerritorio) {
	this->m_pTerritorioSeleccionado = p_pTerritorio;
}

void MapaAbstracto::seleccionarColorDelTerritorio(Territorio &p_Territorio) {

	if ((this->getTerritorioSeleccionado() != NULL)
		&& (p_Territorio.getNombre() == this->getTerritorioSeleccionado()->getNombre())) {

		if (p_Territorio.getEnPoderDe() == "marron") {
			glColor3f(150.0 / 255.0f, 75.0 / 255.0f, 0.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "violeta") {
			glColor3f(100.0 / 255.0f, 14.0 / 255.0f, 237.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "amarillo") {
			glColor3f(255.0 / 255.0f, 255.0 / 255.0f, 0.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "azul") {
			glColor3f(0.0 / 255.0f, 0.0 / 255.0f, 255.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "rojo") {
			glColor3f(255.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "verde") {
			glColor3f(0.0 / 255.0f, 128.0 / 255.0f, 0.0 / 255.0f);
		}

	} else {

		if (p_Territorio.getEnPoderDe() == "marron") {
			glColor3f(240.0f / 255.0f, 128.0f / 255.0f, 128.0f / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "violeta") {
			glColor3f(123.0 / 255.0f, 104.0 / 255.0f, 238.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "amarillo") {
			glColor3f(250.0 / 255.0f, 250.0 / 255.0f, 180.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "azul") {
			glColor3f(30.0 / 255.0f, 144.0 / 255.0f, 255.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "rojo") {
			glColor3f(255.0 / 255.0f, 105.0 / 255.0f, 180.0 / 255.0f);
		} else if (p_Territorio.getEnPoderDe() == "verde") {
			glColor3f(60.0 / 255.0f, 179.0 / 255.0f, 113.0 / 255.0f);
		}
	}
}

}
}
}
